package com.yzkj.siot.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yzkj.siot.domain.TenantDeviceData;
import com.yzkj.siot.dto.DataExportDTO;
import com.yzkj.siot.vo.DeviceDataSummaryVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 产品 Mapper 接口
 * </p>
 *
 * @author skye
 * @since 2021-11-19
 */
@Mapper
public interface TenantDeviceDataMapper extends BaseMapper<TenantDeviceData> {

    /**
     * 获取设备数据统计值
     *
     * @param timeGranularity 时间间隔粒度
     * @param productDataId   数据解析协议Id
     * @param startTime       时间区间-开始
     * @param endTime         时间区间-结束
     * @param tenantId        租户Id
     */
    List<DeviceDataSummaryVO> querySummary(
            @Param("timeGranularity") Integer timeGranularity,
            @Param("productDataId") Integer productDataId,
            @Param("startTime") String startTime,
            @Param("endTime") String endTime,
            @Param("tenantId") Integer tenantId
    );

    Integer curMonthCount(@Param("tenantId") Integer tenantId);

    // 精度 小时
    List<DeviceDataSummaryVO> querySummaryForHour(
            @Param("productDataId") Integer productDataId,
            @Param("startTime") String startTime,
            @Param("endTime") String endTime,
            @Param("tenantId") Integer tenantId
    );
    
	Integer countExportData(@Param("tenantId") int tenantId, @Param("productId") int productId, @Param("productDataId") int productDataId, @Param("deviceId") int deviceId);

	List<DataExportDTO> pageExportData(@Param("tenantId") int tenantId, @Param("productId") int productId, @Param("productDataId") int productDataId, @Param("deviceId") int deviceId, @Param("pageIdx") int pageIdx, @Param("pageSize") int pageSize);
}
